Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Funciones y procedimientos en Visual Basic 2005 para calcular el valor en letras de un monto y el detalle del vuelto correspondiente (página 2)




Enviado por jaimemontoya



Partes: 1, 2

MONTO DE $82.00

MONTO DE $96.00

MONTO DE $100.0

CLICK AL BOTÓN
LIMPIAR

CLICK AL BOTÓN
SALIR

CÓDIGO DEL PROGRAMA

Los TextBox tienen los siguientes nombres de arriba
hacia abajo:

montoapagar

montoenletras

efectivo

vuelto

billetes20

billetes10

billetes5

billetes1

Los tres botones tienen los siguientes nombres de
izquierda a derecha:

calcular

limpiar

salir

CÓDIGO DEL FORMULARIO Y SUS
CORRESPONDIENTES PROCEDIMIENTOS

Public Class Form1

Private Sub calcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calcular.Click

If (montoapagar.Text
= "")
Then

MsgBox("Escriba el valor del
monto.", MsgBoxStyle.Exclamation,
"Cálculo de
Montos")

montoapagar.Focus()

Else

If (montoapagar.Text >
100) Then

MsgBox("El monto no puede
ser mayor que $100.00.",
MsgBoxStyle.Exclamation, "Cálculo de Montos")

montoapagar.Text = ""

montoenletras.Text = ""

efectivo.Text = "$100.00"

vuelto.Text = ""

billetes20.Text = ""

billetes10.Text = ""

billetes5.Text = ""

billetes1.Text = ""

montoapagar.Focus()

Else

montoenletras.Text =
montoenletras1(montoapagar.Text)

vuelto.Text = vuelto1(montoapagar.Text)

vueltoendetalle(vuelto.Text, billetes20.Text,
billetes10.Text, billetes5.Text, billetes1.Text)

End If

End If

End Sub

Private Sub
montoapagar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Handles
montoapagar.KeyPress

If (Asc(e.KeyChar) >=
48 And Asc(e.KeyChar)
<= 57) Or
(Asc(e.KeyChar) = 8) Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al
57).

'No se hace nada porque el caracter
presionado es válido.

Else

'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es
inválida.

e.KeyChar = ""
'Reemplaza la tecla digitada con el valor
de nada para que no se puedan introducir caracteres
inválidos.

End If

End Sub

Private Sub salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salir.Click

Dim mensaje
As String

mensaje = MsgBox("¿Desea realmente salir del programa?", vbYesNo,
"Cálculo de
Montos")

If mensaje = 6
Then

End

End If

End Sub

Private Sub limpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles limpiar.Click

montoapagar.Text = ""

montoenletras.Text = ""

efectivo.Text = "$100.00"

vuelto.Text = ""

billetes20.Text = ""

billetes10.Text = ""

billetes5.Text = ""

billetes1.Text = ""

End Sub

End Class

CÓDIGO DEL MÓDULO Y SUS
CORRESPONDIENTES FUNCIONES Y
PROCEDIMIENTOS

Module Module1

Public Function unidades(ByVal montoapagar As Integer) As Integer

unidades = Val(Strings.Right(Str(montoapagar),
1)) 'A partir de la derecha, toma un
valor, de modo que devuelve las unidades.

End Function

Public Function decenas(ByVal montoapagar As Integer) As Integer

decenas =
Val(Strings.Left(Strings.Right(Str(montoapagar), 2), 1))
'A partir de la derecha, toma dos valores. Luego
de ese resultado, a partir de la izquierda toma un valor, de modo
que devuelve las decenas.

End Function

Public Function
montoenletras1(ByVal
montoapagar As
Integer) As String

Dim unidades1,
decenas1 As Integer

unidades1 = unidades(montoapagar)

decenas1 = decenas(montoapagar)

montoenletras1 = ""

If (montoapagar >=
30) Then

Select Case decenas1

Case 3

montoenletras1 += "Treinta"

Case 4

montoenletras1 += "Cuarenta"

Case 5

montoenletras1 += "Cincuenta"

Case 6

montoenletras1 += "Sesenta"

Case 7

montoenletras1 += "Setenta"

Case 8

montoenletras1 += "Ochenta"

Case 9

montoenletras1 += "Noventa"

Case 0 'Si El valor es "100", el segundo digito de derecha a
izquierda (el valor de las decenas) es "0".

montoenletras1 += "Cien"

End Select

Select Case unidades1

Case 1

montoenletras1 += " y
uno"

Case 2

montoenletras1 += " y
dos"

Case 3

montoenletras1 += " y
tres"

Case 4

montoenletras1 += " y
cuatro"

Case 5

montoenletras1 += " y
cinco"

Case 6

montoenletras1 += " y
seis"

Case 7

montoenletras1 += " y
siete"

Case 8

montoenletras1 += " y
ocho"

Case 9

montoenletras1 += " y
nueve"

End Select

Return
montoenletras1

Else

Select Case montoapagar

Case 0

Return "Cero"

Case 1

Return "Uno"

Case 2

Return "Dos"

Case 3

Return "Tres"

Case 4

Return "Cuatro"

Case 5

Return "Cinco"

Case 6

Return "Seis"

Case 7

Return "Siete"

Case 8

Return "Ocho"

Case 9

Return "Nueve"

Case 10

Return "Diez"

Case 11

Return "Once"

Case 12

Return "Doce"

Case 13

Return "Trece"

Case 14

Return "Catorce"

Case 15

Return "Quince"

Case 16

Return "Dieciséis"

Case 17

Return "Diecisiete"

Case 18

Return "Dieciocho"

Case 19

Return "Diecinueve"

Case 20

Return "Veinte"

Case 21

Return "Veintiuno"

Case 22

Return "Veintidos"

Case 23

Return "Veintitres"

Case 24

Return "Veinticuatro"

Case 25

Return "Veinticinco"

Case 26

Return "Veintiséis"

Case 27

Return "Veintisiete"

Case 28

Return "Veintiocho"

Case 29

Return "Veintinueve"

End Select

End If

End Function

Public Function vuelto1(ByVal montoapagar As Integer) As String

vuelto1 = (100 – montoapagar)

vuelto1 = "$"
+ vuelto1 'Concatenando "$"
para la respuesta.

End Function

Public Sub vueltoendetalle(ByVal vuelto As String, ByRef billetes20 As String, ByRef billetes10 As String, ByRef billetes5 As String, ByRef billetes1 As String) 'Este
es un procedimiento, no
una funcion. Notese que el primer parametro es por valor y los
demas por referencia. Es porque el primer parametro es para darle
datos con que
trabajar al procedimiento y los demas son donde se hacen los
intercambios u operaciones. Los
ultimos 4 parametros tienen que ser "ByRef", pues de lo contrario
el programa no da error pero no funcionaria correctamente, pues
esperaria parametros por valor provenientes de los TextBox. Lo
que se pretende es que el procedimiento realice las respectivas
operaciones y modifique las variables
correspondientes que se le dan como parametro, de modo que
imprimira los resultados en los TextBox correspondientes cuando
estos se pasen correctamente como parametros del procedimientos
cuando este sea llamado por el programa.

Dim residuo
As Integer 'Ira almacenando
los residuos

billetes20 = Str(Int(vuelto / 20)) 'Cuantos billetes de $20 se necesitan para dar el
vuelto.

'billetes20 = Str(vuelto Mod 20)
'"Str()" porque los parametros del procedimiento son tipo String,
entonces se requiere la conversion.

residuo = vuelto Mod
20 'Residuo luego de dar los
billetes de $20.00

billetes10 = Str(Int(residuo / 10)) 'Cuantos billetes de $10 se necesitan para dar el
vuelto.

residuo = residuo Mod 10 'Residuo luego de dar los billetes de
$10.00.

billetes5 = Str(Int(residuo / 5)) 'Cuantos billetes de $5 se necesitan para dar el
vuelto.

residuo = residuo Mod 5 'Residuo luego de dar los billetes de $5.00.

billetes1 = Str(Int(residuo / 1)) 'Cuantos billetes de $1 se necesitan para dar el
vuelto.

residuo = residuo Mod 1 'Residuo luego de dar los billetes de $1.00. Esta linea
realmente no tiene sentido, pues dividir entre 1 no dara residuo
diferente de cero, entonces se sabe que el residuo es
cero.

End Sub

End Module

CONCLUSIÓN

Este sencillo programa permite comprender el uso y
utilidad de
funciones y procedimientos, así como percibir la
diferencia entre la una y la otra. Básicamente la
diferencia es que una función
devuelve uno y sólo un valor, mientras que un
procedimiento puede devolver varios valores o incluso no devolver
ninguno.

Las funciones y procedimientos son fundamentales en la
programación
orientada a objetos, por lo cual es necesario comprender y
utilizar adecuadamente estas poderosas herramientas.
Analizar este programa y comprenderlo en su totalidad será
de gran ayuda para aprender el uso y utilidad de las funciones y
procedimientos.

 

Jaime Montoya

Santa Ana, 29 de enero de 2008

El Salvador

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter